#ifndef ObjectDetection_h__
#define ObjectDetection_h__

#include <opencv2/opencv.hpp>
#include <vector>
#include <string>
#include <set>
#include <cmath>

struct ObjectData
{
    ObjectData() {}
    ObjectData(const std::string& s, const cv::Rect& r) : name(s), rect(r) {}
    std::string name;
    cv::Rect rect;
};

void ReadModelDirectory(const std::string& modelDirectory, std::vector<std::string>& models, bool addDirectoryName = true);

void DetectObjects(const cv::Mat& image, const std::string& modelDirectory, std::set<std::string>& tags);

void DetectObjects(const cv::Mat& image, const std::string& modelDirectory, std::vector<ObjectData>& datas);

#endif  // ObjectDetection_h__